package com.netifera.platform.host.filesystem; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; public class LocalFileSystem implements IFileSystem { private List<IFileSystemListener> listeners = new ArrayList<IFileSystemListener>(); public String getNameSeparator() { return java.io.File.separator; } public File[] getRoots() { return convert(java.io.File.listRoots()); } public File[] getDirectoryList(String directoryName) { return convert((new java.io.File(directoryName)).listFiles()); } private File convert(java.io.File javaFile) { int attributes = 0; if (javaFile.isDirectory()) attributes |= File.DIRECTORY; if (javaFile.isFile()) attributes |= File.FILE; if (javaFile.isHidden()) attributes |= File.HIDDEN; return new File(this, javaFile.getAbsolutePath(), attributes, javaFile.length(), javaFile.lastModified()); } private File[] convert(java.io.File[] javaFiles) { if (javaFiles == null) return null; List<File> files = new ArrayList<File>(); for (java.io.File javaFile: javaFiles) files.add(convert(javaFile)); return files.toArray(new File[files.size()]); } public InputStream getInputStream(String fileName) throws FileNotFoundException { return new FileInputStream(fileName); } public OutputStream getOutputStream(String fileName) throws FileNotFoundException { return new FileOutputStream(fileName); } public boolean delete(String path) { java.io.File file = new java.io.File(path); if (file.delete()) { File deletedFile = convert(file); for (IFileSystemListener listener: listeners) listener.removed(deletedFile); return true; } return false; } public boolean deleteDirectory(String path) { return false; } public File createDirectory(String path) { // TODO Auto-generated method stub return null; } public boolean rename(String oldName, String newName) { java.io.File oldFile = new java.io.File(oldName); java.io.File newFile = new java.io.File(newName); return oldFile.renameTo(newFile); } public void addListener(IFileSystemListener listener) { listeners.add(listener); } public void removeListener(IFileSystemListener listener) { listeners.remove(listener); } public String toString() { return "Local File System"; } }